#ifndef BASECURVE_H
#define BASECURVE_H

#include <GL/gl.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <vector>
#include "utils.h"

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Point_3<K>                                    Point_3;
typedef CGAL::Vector_3<K>                                   Vector_3;
typedef std::vector<Point_3>                                Points;
typedef std::vector<Vector_3>                               Vectors;

class BaseCurve
{
public:
    Points points;
    Vectors normals;

    BaseCurve();
    BaseCurve(Points points);
    BaseCurve(Points points , Vectors normals);

    void drawNormals();

    Vectors calculateNormals(double glPrevious[16] , double glPresent[16] , double glNext[16]);
    Vectors calculateNormals(double glTransform1[16] , double glTransform2[16]);
};

#endif // BASECURVE_H
